Примеры функций Concat
Не следует путь функцию CONCAT() с ключевым словом скрипта CONCATENATE.
В простейшей форме функция Concat() используется для объединения вместе значений, слов, выборок в одну строку. Однако ее можно использовать различным образом для решения различных проблем. Все примеры основаны на следующей таблице:
Table | MyColumn | Date | Value |
---|---|---|---|
Data | JKL | 01/01/2012 | 11 |
Data1 | WVX | 01/02/2012 | 13 |
Data | GHI | 01/03/2012 | 13 |
Data | ABC | 01/04/2012 | 15 |
Data1 | STU | 01/05/2012 | 18 |
Data1 | PQR | 01/06/2012 | 10 |
Data1 | MNO | 01/07/2012 | 25 |
Data | DEF | 01/08/2012 | 11 |
Простое объединение строк
Как было отмечено ранее, функция concat позволяет объединить целый ряд значений в одну строку. Эти значения могут быть жестко прописаны или определяться в зависимости от выбранных значений или данных.
=CONCAT(MyColumn,',')
=CONCAT(DISTINCT MyColumn,',')
Данное простое выражение concat объединяет в одну строку все возможные значения из столбца MyColumn. Можно также добавить ключевое слово DISTINCT. При этом каждое значение будет отображаться в строке только один раз.
ABC,DEF,GHI,JKL,MNO,PQR,STU,VWX
При использовании простой функции concat имеется возможность добавить вес сортировки в функцию, чтобы упорядочить строковые значения по выбранному столбцу. В следующем примере добавляет столбец данных для сортировки значений.
=CONCAT(MyColumn, ',', Date)
Результат: JKL,VWX,GHI,ABC,STU,PQR,MNO,DEF
Функция Concat() внутри выражения/оператора Set
Пример: Передача нескольких динамических значений в выражение анализа множеств
Иногда требуется передать в оператор set динамическую выборку значений. Для этого необходимо добавить несколько одиночных кавычек в строку, чтобы функция CONCAT() возвращала что-то наподобие 'JKL','VWX'. Однако одиночные кавычки нельзя использовать, поскольку они будут обрабатываться при оценке выражения Concat, а не во время оценки выражения множества. Вместо этого используйте функцию Chr():
=CONCAT(Chr(39)&MyColumn&Chr(39),',')
Затем можно передать этот оператор concat внутрь выражения:
=Sum({<MyColumn={$(=CONCAT(Chr(39)&MyColumn&Chr(39),','))}>} Value)
В большинстве случае данный метод будет использоваться при наличии островков данных. Это позволяет передать значения в выражение, что не отразится ни на какой части модели данных, поскольку таблица островка данных не входит в нее.
Функция Concat() в скрипте
Функцию Concat также можно использовать в скрипте для преобразования нескольких строк в одно значение одного столбца, точно так же, как любое другое агрегирование.
Для исходных данных, которые применялись ранее, на стороне скрипта CONCAT результат будет следующим:
Далее приведен результат функции скрипта:
Table | CombinedData |
---|---|
Data | ABC,DEF,GHI,JKL |
Data1 | MNO,PQR,STU,WVX |
Использование функции Rank() для воздействия на функцию Concat()
Как только вы начнете использовать другие функции вместе с функцией concat(), вы начнете получать более понятные результаты. В данном примере с помощью функции Rank() выбирались три лучших работника (на основе значения) и объединялись вместе в одну строку.
=CONCAT(IF(aggr(Rank(sum(Value)),MyColumn)<=3,MyColumn),',')
Результат: ABC,MNO,STU